LinuC-2 - 202試験 - 2.10:電子メールサービス - 2.10.1 Postfixの設定と管理

Last Update : August 21 2022 17:47:12

     

a. Postfixの設定

Postfixの設定を

1. main.cfの編集
# vi /etc/postfix/main.cf

以下の項目を編集していきます。

myhostname = mail.example.com
ホスト名を設定します。先頭に#がついていたら削除します。
mydomain = example.com
ドメイン名を設定します。先頭に#がついていたら削除します。
myorigin = $mydomain
メールアドレスの@より後ろのドメイン名を指定します。
inet_interfaces = all
このメールシステムがメールを受け取るネットワークインターフェースアドレスを設定します。すべてのネットワークインターフェースでメールを受信するには "all" を指定します。
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
独自ドメイン宛のメールを受信できるように設定します。先頭に#がついていたら削除します。$mydomainを追記します。
home_mailbox = Maildir/
メールを保存する形式(スプール)をMaildir形式に指定します。
「#home_mailbox = Maildir/」行頭にある#を削除して、この行を有効にします。
smtp_tls_loglevel = 1
/var/log/maillog に TLS 関連のログを出力します。
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
SMTP認証の設定をします。
ファイルの末尾に2行を追加します。


● メールリレーをする場合

Postfixをメールリレーサーバとして動作させるために以下の設定を行います。
/etc/postfix/main.cfの以下の項目を設定します。

transport_maps = hash:/etc/postfix/transport
transport にあるメールリレー設定を参照するよう transport_maps を追加する

/etc/postfix/transport を設定します。

# vi /etc/postfix/transport
localhost : localhost.localdomain : mail.example.com : * smtp:[outmail.exsample.com]:10025

外部メールサーバへのメールリレー設定となります。 最初のアスタリスク(*)は宛先ドメインを全てマッチさせます。 smtp: は、SMTPによるメールリレーを指定しています。 [SMTPホスト名]は、メールリレー先サーバ名を指定しています(SMTPホスト名は[]で囲ってください)。 :10025 は SMTPの接続ポートを指定しています。
ホスト名を[ ]でくくると、Aレコードとして処理されます。IPアドレス、ホスト名を記述します。
ドメイン名を直接記述すると、MXレコードで解決されます。ドメイン名を指定できますが、ホスト名、IPアドレスは記述できません。

ファイルを保存したら、ハッシュ化が必要なため、以下のコマンドを実行します。

# postmap /etc/postfix/transport

設定ファイルをチェックするには、

# postfix check

main.cfを確認するには、postconf コマンドを実行します。

# postconf

デフォルト値から変更されている項目のみ確認するには、-n オプションをつけて実行します。

# postconf -n

【 メールボックス形式 】
受け取ったメールを保存する形式に MailBox(mbox) 形式と MailDir 形式がある。

MailBox 形式は古くから使われている形式で、この形式では1ユーザのメールデータは、全てひとつのファイルに保存される。ひとつのファイルに保存されるため、データの管理やバックアップが容易に行えるという利点がある。
デメリットとして、メールデータがひとつのファイルで管理されるため、データ容量の増加に伴い、性能劣化が発生する問題がある。またファイルが壊れたり、メールサーバが解釈できないデータが書き込まれた場合には、全てのメールの参照が不可能になるという問題もある。
セキュリティの面では、Maildir 形式の場合は各ユーザーのホームディレクトリにファイルが配置される為、アクセス権限を持つユーザーからしかアクセスされることはありませんが、MailBox 形式の場合は全てのユーザーが共有しているフォルダ配下にファイルが配置されてしまいます。

それに対して Maildir 形式は新しい形式で、同じ人宛のメールは1つのディレクトリへ、1通のメールを1つのファイルとして保管する形式です。

慣習的に MailBox 形式のファイルは下記のようなディレクトリに保存されます。

  • /var/mail/ユーザー名
  • /var/spool/mail/ユーザー名 (CentOS / RedHat)

Maildir 形式の場合は、ユーザーそれぞれのホームディレクトリに保存されます。

  • /home/ユーザー名/Maildir/

Maildir 形式は、宛先毎にディレクトリを分けてメールを置きます。
MailBox 形式は、全部のメール(全員分)が1つのディレクトリに置かれます。


2. master.cfの編集

master.cfは、各プロセス毎の設定となり、-oオプションでmain.cfの設定を上書きします。
Submissionポート(587番ポート)とSMTP認証を設定するため、 /etc/postfix/master.cf を編集します。

# vi /etc/postfix/master.cf

以下の項目を編集していきます。

submission inet n - n - - smtpd
submission ポートを有効にします。
-o smtpd_sasl_auth_enable=yes
SMTP認証を使用するかどうかの設定です。使用する場合はyesを設定します。
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
リレーを許可するものを設定する。「permit_sasl_authenticated」はSMTP認証を通過したものを許可する設定なので必ず加える。「permit_mynetworks」は「mynetworks」で設定されたネットワークからの接続を許可する。「reject」はそれ以外は拒否することを設定している。

Postfixを起動します。

# systemctl enable postfix systemctl start postfix

Port 587が起動していることを確認します。

# ss -natup |grep master tcp LISTEN 0 100 *:25 *:* users:(("master",pid=12822,fd=13)) tcp LISTEN 0 100 *:587 *:* users:(("master",pid=12822,fd=17))

3. ユーザ毎のメール用ディレクトリ自動作成の設定

ユーザを追加した際、ユーザのホームディレクトリにメール用ディレクトリが自動で作成されるように設定します。

# mkdir -p /etc/skel/Maildir/{new,cur,tmp} # chmod -R 700 /etc/skel/Maildir/

4. SASLの設定の確認

SASLによる認証方法には、主にUNIXユーザー認証(PAM認証)とSASL側のデータベース(sasldb)による認証が用いられます。

● PAM認証の場合

/etc/sysconfig/saslauthdを確認します。以下のようにMECH=pam(Ubuntuの場合はMECHANISMS="pam")であればPAM認証です。(PAM認証がデフォルトです)

CentOS の場合(/etc/sysconfig/saslauthd):
# /etc/sysconfig/saslauthd
# Directory in which to place saslauthd's listening socket, pid file, and so # on. This directory must already exist. SOCKETDIR=/run/saslauthd # Mechanism to use when checking passwords. Run "saslauthd -v" to get a list # of which mechanism your installation was compiled with the ablity to use. MECH=pam     <--- PAM認証を指定 # MECH=shadow     <--- shadow ファイルを使用 # Additional flags to pass to saslauthd on the command line. See saslauthd(8) # for the list of accepted flags. FLAGS=

# vi /etc/sasl2/smtpd.conf
pwcheck_method: saslauthd mech_list: plain login

pwcheck_methodの設定
saslauthd ・・・ PAMやshadowを使用
auxprop ・・・ SASL独自のパスワードDBを使用

saslauthd での認証がうまくいくかどうかは、testsaslauthd コマンドで確認できる。

# testsaslauthd -u ユーザ名 -p パスワード 0: OK "Success."

● SMTP認証にSASL独自のパスワードデータベースを利用する場合

SASL独自データベースは管理に手間がかかりますが、パスワードの暗号化もサポートしているため安全性は高まります。
注意点としては利用者のメールソフトがSMTP認証の暗号化に対応している必要があります。

# vi /etc/sasl2/smtpd.conf
pwcheck_method: auxprop mech_list: cram-md5 digest-md5 plain login

3.SASL独自のデータベースに新規ユーザーを追加 「example.com」というドメインのSMTPサーバに接続許可する「hogeuser」を作成する場合。 # su - ←「-」を忘れずに # saslpasswd2 -c -u example.com hogeuser Password: ←パスワードを入力 Again (for verification): ←再度同じパスワードを入力 正常にユーザーが追加されると「/etc/sasldb2」にデータベースが作成されます。 ユーザーの確認するコマンド # sasldblistusers2 ユーザーの削除するコマンド # saslpasswd2 -d -u example.com hogeuser 4.続けて新規ユーザーを追加すると作成される「/etc/sasldb2」をPostfixで開けるようにグループに追加。合わせてパーミッションを変更。 # chgrp postfix /etc/sasldb2 # chmod 640 /etc/sasldb2 5.PostfixとSASLの変更を有効にするため再起動 # /etc/init.d/postfix restart # /etc/init.d/saslauthd restart これでSASL独自のパスワードデータベースを利用したSMTP認証ができました。

b. PostfixのTLS

SMTPでTLS/SSLを使うようにするため、 /etc/postfix/master.cf を編集します。

# vi /etc/postfix/master.cf

以下の項目を編集していきます。

-o smtpd_tls_security_level=may
↑ submission port 587の時これをencriptにすると、STARTTLSをしてから送れ、と言われてしまうので、どっちも許容のmayがよい

Submissionポート(587番ポート)とSMTP認証の設定はしておく。

# nano /etc/postfix/master.cf  頭の方に記載がある 【中身】 smtp inet n - n - - smtpd ↑必須 submission inet n - n - - smtpd ↑587ポートを使う場合 -o smtpd_tls_security_level=may ↑587の時これをencriptにすると、STARTTLSをしてから送れ、と言われてしまうので、どっちも許容のmayがよい -o smtpd_sasl_auth_enable=yes ↑SMTP認証を使う場合はyesにする -o smtpd_client_restrictions=permit_sasl_authenticated,reject ↑SMTP-AUTHを通ったものを許可する。rejectは細かく指定するとそこは蹴れる。

# nano /etc/postfix/main.cf   TLSは末尾に記載されているので、そこを編集 【中身】 ## TLS # Transport Layer Security # smtpd_use_tls = yes smtp_use_tls = yes #smtpd_tls_auth_only = yes ↑これを有効にするとTLSでないと言われるので、コメントアウトのままにしておく smtpd_tls_key_file = /usr/local/ssl/private/キーファイル.key smtpd_tls_CAfile = /usr/local/ssl/crt/SSL証明書ファイル.crt smtpd_tls_loglevel = 3 ↑これを1にすると、ログにTLSの事が記載されるらしい。 smtpd_tls_received_header = yes tls_random_source = dev:/dev/urandom smtpd_tls_security_level=may ↑25ポートからのSTARTTLSを使う場合は、master.cfでなく、main.cfに記載するとの事。 postfixを再起動して内容反映 # systemctl restart postfix オレンジ色の部分を記載すると、 相手がTLSを受け付けてくれる場合は、MTA間通信をSSL/TLSにて行える


c. SMTP認証


d. SMTPプロトコル


e. Exim(エクシム)

Eximは、UNIXライクホスト用の「メール転送エージェント」(MTA:Mail Transfer Agent)です。
メールのルーティング方法に柔軟性があり、受信メールをチェックするための広範な機能を利用できます。
Sendmail互換性により、Sendmail代替ソフトウェアとしても利用できます。


z. 出題範囲概要

概要 :
  • 電子メールサーバーを管理できる。これには、電子メールのエイリアス、アクセス制限、仮想ドメインの設定も含まれる。また、内部的な電子メールリレーの設定および電子メールサーバーの監視も含まれる。

詳細 :
  • Postfixの設定ファイル、スプール、ログファイル
    /etc/postfix/, /etc/aliases, /var/spool/postfix/, /var/log/のメール関連のログ
  • Postfixの基本的な TLS の設定
  • SMTP認証の設定
  • SMTPプロトコルに関する基本的な知識
  • eximを知っている。

  [ 例題 ] 


         

    www.it-shikaku.jp